/*
 * Copyright (C) 2005-present, 58.com.  All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.wuba.wlock.server.communicate;

import com.wuba.wlock.common.registry.protocol.ProtocolConstant;
import org.jboss.netty.channel.ChannelHandler;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;

import static org.jboss.netty.channel.Channels.pipeline;

public class TcpPipelineFactory implements ChannelPipelineFactory {

	private final ChannelHandler handler;
	private int frameMaxLength;

	public TcpPipelineFactory(ChannelHandler handler, int frameMaxLength) {
		this.handler = handler;
		this.frameMaxLength = frameMaxLength;
	}

	@Override
	public ChannelPipeline getPipeline() throws Exception {
		ChannelPipeline pipeline = pipeline();
		//ChannelBuffer buf = directBuffer(Delimiter.TAIL_DELIMITER.length);		
		pipeline.addLast("decoder", new WlockFrameDecoder(ProtocolConstant.P_END_TAG, frameMaxLength));
		pipeline.addLast("encoder", new WlockPrepender(ProtocolConstant.P_END_TAG));
		pipeline.addLast("handler", handler);
		return pipeline;
	}
}